#!/bin/bash
 
## war包名称
JAR_NAME="jenkins.war"
 
## 查找是否有运行的jenkins.war 返回pid
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
 
## 输出的日志位置 如果报文件不存在，就在jenkins目录下touch nohup.out，就ok了
LOG_PATH=/data/jenkins/nohup.out
 
## 如果pid不存在，说明没有正在运行的jenkins.war，直接启动
if [ -z $pid ]; then
        ## 台运行 jenkins.war --httpPort指定端口8080 ，如果端口被占用了，可指定其他端口
        ## 因为我使用了nginx代理端口，所以使用 --prefix 指定了请求前缀为/jenkins 这个需要在nginx中配置相同前缀/jenkins，就可以外网访问jenkins了
        ## 如果没有使用反向代理，就不需要添加 --prefix="/jenkins" 这一截
    nohup java -jar $JAR_NAME --httpPort=8080 --prefix="/jenkins"  > $LOG_PATH 2>&1 &
    ## 查看启动后的pid
    pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
    echo "Service ${JAR_NAME} is started！pid=${pid}"
    ## 动态查看启动日志
    tail -f ${LOG_PATH}
## 如果pid存在，说明有正在运行的jenkins.war，需要先杀掉这个进程，再重新启动jenkins.war
else
        ## 杀掉已有进程
    kill -9 $pid
    ## 重新运行jenkins.war
    nohup java -jar $JAR_NAME --httpPort=8080 --prefix="/jenkins"  > $LOG_PATH 2>&1 &
    echo "Service ${JAR_NAME} is restarted！pid=${pid}"
    tail -f ${LOG_PATH}
fi

#参考：https://blog.csdn.net/winerpro/article/details/143837997?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522e63bc7dad7b52346f0ae58fe565440af%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=e63bc7dad7b52346f0ae58fe565440af&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-23-143837997-null-null.142^v101^pc_search_result_base4&utm_term=war%E5%8C%85%E9%83%A8%E7%BD%B2Jenkins&spm=1018.2226.3001.4187
#参考：https://blog.csdn.net/Edcee300015/article/details/137399565